package com.example.mybatis.demo1.config;


import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;

//统一异常处理
//@ControllerAdvice
@ResponseBody
public class ErrorAdvice {
    @ExceptionHandler(Exception.class)
    public Object handler(Exception e){
        HashMap<String, Object> map = new HashMap<>();
        map.put("state",0);
        map.put("data",null);
        map.put("msg",e.getMessage());
        return map;
    }
        //针对不同异常，返回不同结果
        //当有多个异常通知时，匹配顺序为当前类及其⼦类向上依次匹配
    @ExceptionHandler(NullPointerException.class)
    public Object nullPointerexceptionAdvice(NullPointerException e) {
        HashMap<String, Object> result = new HashMap<>();
        result.put("success", -1);
        result.put("message", " 空指针异常： " + e.getMessage());
        result.put("data", null);
        return result;
    }

}
//统一异常处理！出现异常就按转上述格式赶回map
//为什么需要统⼀数据返回格式？

/**
 * 1.⽅便前端程序员更好的接收和解析后端数据接⼝返回的数据。
 * 2.降低前端程序员和后端程序员的沟通成本，按照某个格式实现就⾏了，因为所有接⼝都是这样返回的。
 * 3.有利于项⽬统⼀数据的维护和修改。
 * 4.有利于后端技术部⻔的统⼀规范的标准制定，不会出现稀奇古怪的返回内容。
 */

//如何统一返回格式，上述的是软性要求，并非硬性要求！
//统⼀的数据返回格式可以使⽤ @ControllerAdvice + ResponseBodyAdvice 的⽅式实现